/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2017-2027 Chinazyjr,Inc.All Rights Reserved.
 */
package com.sys.midware.rdb.handler;

import java.util.Collection;
import java.util.List;

import com.sys.midware.rdb.exception.RDBException;

/**
 * 
 * <b>ClassName：</b> DBHandler <br/>
 * <b>Description：</b> MongoDB访问数据库的句柄对象 <br/>
 * <b>@author：</b> mobing <br/>
 * <b>@date：</b> 2016年1月7日 上午10:49:02 <br/>
 * <b>@version: </b> <br/>
 */
public interface IRDBHandlerMyBatis  {
    /**
     * 执行新增
     * 
     * @param record 待添加的数据记录
     * @throws Exception 若添加失败则抛出异常
     */
    public <E extends Object> void performInsert(String sql,E record) throws RDBException;
    
    /**
     * 批量新增
     * 
     * @param record 待添加的数据记录
     * @throws Exception 若添加失败则抛出异常
     */
    public  <E extends Object>void performInsertBatch(String sql,Collection<E> record) throws RDBException;
    
    /**
     * 执行更新
     * 
     * @param record 待添加的数据记录
     * @throws Exception 若添加失败则抛出异常
     */
    public <E extends Object> void performUpdate(String sql,E record) throws RDBException;
    /**
     * 批量更新
     * 
     * @param record 待添加的数据记录
     * @throws Exception 若添加失败则抛出异常
     */
    public <E extends Object> void performUpdateBatch(String sql,Collection<E>  record) throws RDBException;
    /**
     * 查询List
     * 
     * @param obj 查询条件参数对象
     * @return 查询结果对象
     * @throws Exception 若查询过程失败则抛出异常
     */
    public <E extends Object> List<E> performQuery4List(String sql,Object obj) throws RDBException;
    
    /**
     * 查询List
     * 
     * @param obj 查询条件参数对象
     * @return 查询结果对象
     * @throws Exception 若查询过程失败则抛出异常
     */
//    public <E extends Object> void performQuery4List4Page(String sql,Object obj,Pagenation<E> page) throws RDBException;
    
//    /**
//     * 查询List
//     * 
//     * @param obj 查询条件参数对象
//     * @return 查询结果对象
//     * @throws Exception 若查询过程失败则抛出异常
//     */
//    public <E extends Object> List<E> performQuery4List(String sql,Map<String,Object> obj) throws RDBException;
    
    /**
     * 单个对象查询
     * 
     * @param obj 查询条件参数对象
     * @return 查询结果对象
     * @throws Exception 若查询过程失败则抛出异常
     */
    public <E extends Object> E performQuery(String sql,Object obj) throws RDBException;
    /**
     * 执行删除
     * 
     * @param obj 查询条件参数对象
     * @return 查询结果对象
     * @throws Exception 若查询过程失败则抛出异常
     */
    public <E extends Object> void performDelete(String sql,E obj) throws RDBException;
    
    /**
     * 批量删除
     * 
     * @param obj 查询条件参数对象
     * @return 查询结果对象
     * @throws Exception 若查询过程失败则抛出异常
     */
    public <E extends Object> void performDeleteBatch(String sql,Collection<E> obj) throws RDBException;
    
    public void close();

}
